import pandas as pd
import numpy as np


def 原始成绩导入(文件地址,表名,优生比例):
    # 读取 Excel 文件
    原始成绩 = pd.read_excel(文件地址, sheet_name=表名)

    #筛选出所有状态为正常的学生
    原始成绩 = 原始成绩[原始成绩['状态'] == '正常']

    # 对每一列分别进行数值转换
    for col in ['语文', '数学', '英语']:
        原始成绩[col] = pd.to_numeric(原始成绩[col], errors='coerce')
        # 检查是否有非数字值
        non_numeric_rows = 原始成绩[col].isna()
        if non_numeric_rows.any():
            error_msg = f"列 {col} 中存在非数字值，行索引为：{原始成绩[non_numeric_rows].index.tolist()}"
            print(error_msg)

    # 计算语文、数学、英语的平均值并乘以 0.3
    average_score = (原始成绩[['语文', '数学', '英语']].mean(axis=1)) * 0.3

    # 添加生物、历史、地理、政治、总分列
    原始成绩['生物'] = average_score
    原始成绩['政治'] = average_score
    原始成绩['历史'] = average_score
    原始成绩['地理'] = average_score
    原始成绩['总分'] = 原始成绩[['语文','数学','英语']].sum(axis=1)    
    # 打印结果
    #print(原始成绩)
    # 假设数据中有 '班级' 列，根据班级分组计算每个学科的平均成绩
    if '班级' in 原始成绩.columns:
        班级学科平均原始成绩 = 原始成绩.groupby('班级')[['语文', '数学', '英语','生物','政治','历史','地理','总分',]].mean()
        print("每个班级每个学科的平均成绩：")
        print(班级学科平均原始成绩)
    else:
        print("数据中缺少 '班级' 列，无法计算每个班级每个学科的平均成绩。")

    return(原始成绩,班级学科平均原始成绩)

def main():
    原始成绩, 班级学科平均原始成绩=原始成绩导入('./原始成绩.xlsx','Sheet1',0.2)

if __name__=='__main__':
    main()